Skip to content

Conversation

@heyseth
Copy link

@heyseth heyseth commented Oct 23, 2025

Related GitHub Issue

Closes: #8278

Description

This PR fixes the filename truncation issue in file editing/reading notices by adding tooltips that display the full file path on hover.

Implementation details:

  • Added StandardTooltip components wrapping file path displays in three locations:
    • CodeAccordian.tsx - General file path headers and custom headers
    • ChatRow.tsx - Single file read/edit operations
    • BatchFilePermission.tsx - Batch file permission requests
  • Configured tooltips with className="text-wrap max-w-[min(300px,100vw)]" to:
    • Override the default text-balance CSS (which was causing excessive whitespace)
    • Use responsive max-width that adapts to panel size (300px max on wide panels, 100vw on narrow)
    • Leverage existing break-words CSS for natural line breaking at path separators

Key design choices:

  • Chose to use text-wrap instead of text-balance to minimize whitespace while maintaining readability
  • Used max-w-[min(300px,100vw)] instead of a fixed width to prevent tooltip cutoff in narrow panels while maintaining a reasonable max width

Reviewers should note:

  • The tooltip styling is consistent with other tooltips in the extension (using the existing TooltipProvider and StandardTooltip components)

Test Procedure

Manual testing steps:

  1. Test truncated paths show tooltips:

    • Open Roo Code and start a chat session
    • Ask Roo to read or edit a file with a long path (e.g., src/components/chat/file/with/deeply/nested/structure.tsx)
    • Narrow the chat panel until the filename truncates (shows ellipsis)
    • Hover over the truncated filename in the notice
    • ✅ Verify: Tooltip appears showing the full file path
    • ✅ Verify: Tooltip wraps text to multiple lines without being cut off
  2. Test all tooltip locations:

    • Test tooltips on:
      • Single file read operations
      • Single file edit operations
      • Batch file read operations
      • Batch file edit operations
      • Directory listing operations (listFilesTopLevel, listFilesRecursive tools)
      • Search operations (searchFiles, listCodeDefinitionNames tools)
      • ✅ Verify: All locations show tooltips with consistent behavior

Testing environment:

  • Tested on narrow panel widths (200px - 400px)
  • Tested on standard panel widths (400px - 800px)
  • Tested with various file path lengths

Pre-Submission Checklist

  • Issue Linked: This PR is linked to an approved GitHub Issue (see "Related GitHub Issue" above).
  • Scope: My changes are focused on the linked issue (one major feature/fix per PR).
  • Self-Review: I have performed a thorough self-review of my code.
  • Testing: New and/or updated tests have been added to cover my changes (if applicable).
  • Documentation Impact: I have considered if my changes require documentation updates (see "Documentation Updates" section below).
  • Contribution Guidelines: I have read and agree to the Contributor Guidelines.

Screenshots / Videos

Before: Filename truncated, no tooltip on hover.

before

After: Tooltip on hover.

after

Documentation Updates

  • No documentation updates are required.

Get in Touch

Discord: @ocean.smith


Important

Adds tooltips to display full file paths on truncated filenames in CodeAccordian.tsx, ChatRow.tsx, and BatchFilePermission.tsx, ensuring responsive and consistent styling.

  • Behavior:
    • Adds StandardTooltip to display full file paths on hover for truncated filenames in CodeAccordian.tsx, ChatRow.tsx, and BatchFilePermission.tsx.
    • Tooltips are styled with text-wrap and max-w-[min(300px,100vw)] for responsive width and minimal whitespace.
  • Design:
    • Uses text-wrap instead of text-balance to reduce whitespace.
    • Ensures tooltip width adapts to panel size, preventing cutoff in narrow panels.
  • Consistency:
    • Tooltip styling aligns with existing tooltips using TooltipProvider and StandardTooltip.

This description was created by Ellipsis for 643090c. You can customize this summary. It will automatically update as commits are pushed.

…tview

Add tooltips that show the complete file path when hovering over truncated
file names in file editing/reading notices throughout the chat interface.

Changes:
- Add StandardTooltip components to file path displays in CodeAccordian,
ChatRow, and BatchFilePermission components
- Override default tooltip styles with `text-wrap` to prevent excessive
whitespace from text-balance behavior
- Use responsive max-width `max-w-[min(300px,100vw)]` to ensure tooltips
adapt to narrow panel widths and prevent content cutoff
- Leverage existing `break-words` CSS to allow natural line breaking at
path separators

The added tooltips:
- Display full file paths even when truncated in the UI
- Wrap text naturally at path separators without excessive whitespace
- Adapt responsively to panel width (max 300px on wide panels, 100vw on narrow)
- Maintain consistent behavior with other tooltips in the extension

Files modified:
- webview-ui/src/components/common/CodeAccordian.tsx
- webview-ui/src/components/chat/ChatRow.tsx
- webview-ui/src/components/chat/BatchFilePermission.tsx
@heyseth heyseth requested review from cte, jr and mrubens as code owners October 23, 2025 23:18
@dosubot dosubot bot added size:M This PR changes 30-99 lines, ignoring generated files. UI/UX UI/UX related or focused labels Oct 23, 2025
@roomote
Copy link

roomote bot commented Oct 23, 2025

Issues Found

All previously identified issues have been resolved:

  • BatchFilePermission.tsx line 39: Tooltip only shows file.path but displayed text includes both path and file.lineSnippet (when present)
  • ChatRow.tsx line 604: Tooltip only shows tool.path but displayed text includes both path and tool.reason (when present)

Follow Along on Roo Code Cloud

@hannesrudolph hannesrudolph added the Issue/PR - Triage New issue. Needs quick review to confirm validity and assign labels. label Oct 23, 2025
Update StandardTooltip content in BatchFilePermission, ChatRow, and CodeAccordian
to use removeLeadingNonAlphanumeric() and include the same formatting as the
visible text, ensuring tooltips display consistently with what users see.
@daniel-lxs daniel-lxs moved this from Triage to PR [Needs Prelim Review] in Roo Code Roadmap Oct 29, 2025
@hannesrudolph hannesrudolph added PR - Needs Preliminary Review and removed Issue/PR - Triage New issue. Needs quick review to confirm validity and assign labels. labels Oct 29, 2025
daniel-lxs added a commit that referenced this pull request Nov 4, 2025
- Add PathTooltip component that wraps StandardTooltip with proper styling
- Use maxWidth='min(300px,100vw)' via inline style to override defaults
- Apply '[text-wrap:wrap]' class to override text-balance behavior
- Add formatPathTooltip helper for consistent path content formatting
- Update CodeAccordian, ChatRow, and BatchFilePermission to use PathTooltip
- Centralizes tooltip behavior and reduces duplication

Supersedes PR #8797.
@daniel-lxs
Copy link
Member

daniel-lxs commented Nov 4, 2025

This PR has been superseded by PR #9030, which implements the same feature with a centralized PathTooltip component and helper function to reduce code duplication and avoid CSS class conflicts.

Thank you for your work on this!

@daniel-lxs daniel-lxs closed this Nov 4, 2025
@github-project-automation github-project-automation bot moved this from PR [Needs Prelim Review] to Done in Roo Code Roadmap Nov 4, 2025
@github-project-automation github-project-automation bot moved this from New to Done in Roo Code Roadmap Nov 4, 2025
mrubens pushed a commit that referenced this pull request Nov 5, 2025
…9030)

- Add PathTooltip component that wraps StandardTooltip with proper styling
- Use maxWidth='min(300px,100vw)' via inline style to override defaults
- Apply '[text-wrap:wrap]' class to override text-balance behavior
- Add formatPathTooltip helper for consistent path content formatting
- Update CodeAccordian, ChatRow, and BatchFilePermission to use PathTooltip
- Centralizes tooltip behavior and reduces duplication

Supersedes PR #8797.
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Nov 6, 2025
* feat: add UsageStats schema and type (RooCodeInc#8441)

feat: add UsageStats schema and type to cloud.ts

Co-authored-by: Roo Code <[email protected]>

* Release: v1.80.0 (RooCodeInc#8442)

chore: bump version to v1.80.0

* feat: add new DeepSeek and GLM models with detailed descriptions to the Chutes provider (RooCodeInc#8467)

* Deprecate free grok 4 fast (RooCodeInc#8481)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* fix: improve save button activation in prompts settings (RooCodeInc#5780) (RooCodeInc#8267)

Co-authored-by: MuriloFP <[email protected]>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* fix: properly reset cost limit tracking when user clicks "Reset and Continue" (RooCodeInc#6890)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* chore(deps): update dependency vite to v6.3.6 [security] (RooCodeInc#7838)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency glob to v11.0.3 (RooCodeInc#7767)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore: add changeset for v3.28.15 (RooCodeInc#8491)

* Changeset version bump (RooCodeInc#8492)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Clamp GPT-5 max output tokens to 20% of context window (RooCodeInc#8495)

* fix: add ollama and lmstudio to MODELS_BY_PROVIDER (RooCodeInc#8511)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.81.0 (RooCodeInc#8519)

* Add the parent task ID in telemetry (RooCodeInc#8532)

* Release: v1.82.0 (RooCodeInc#8535)

* feat: Experiment: Show a bit of stats in Cloud tab to help users discover there's more in Cloud (RooCodeInc#8415)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: John Richmond <[email protected]>

* Revert "feat: Experiment: Show a bit of stats in Cloud tab to help users discover there's more in Cloud" (RooCodeInc#8559)

* Identify cloud tasks in the extension bridge (RooCodeInc#8539)

* Revert "Clamp GPT-5 max output tokens to 20% of context window" (RooCodeInc#8582)

* feat: Add Claude Sonnet 4.5 1M context window support for Claude Code… (RooCodeInc#8586)

feat: Add Claude Sonnet 4.5 1M context window support for Claude Code provider

* chore: add changeset for v3.28.16 (RooCodeInc#8592)

* Changeset version bump (RooCodeInc#8593)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(i18n): Update zh-TW run command title (RooCodeInc#8631)

* feat(commands, webview): Add TDD built-in command; Refactor welcome tips and test guide definition

* refactor(project-wiki): separate command from subtask initialization

* feat(command): update built-in commands count and names in tests

* Add Claude Haiku 4.5 (RooCodeInc#8673)

* Release v3.28.17 (RooCodeInc#8674)

* Changeset version bump (RooCodeInc#8675)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(editor): prevent file editing issues when git diff views are open (RooCodeInc#8676)

* fix(editor): prevent file editing issues when git diff views are open

Add scheme checks to ensure only file:// URIs are matched when finding editors,
avoiding issues with git diffs and other schemes. Includes error logging for
failed editor lookups.

* Remove the warnings

* fix(editor): enforce file:// scheme in editor lookups to prevent git diff issues

---------

Co-authored-by: daniel-lxs <[email protected]>

* web: Cloud page and updates to Pricing to explain Cloud Agent Credits (RooCodeInc#8605)

* Adds mention of Cloud agents to /pricing

* Credit pricing FAQ

* Skeleton of a /cloud page and more pricing page tweaks

* Lint

* Update apps/web-roo-code/src/app/cloud/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* Code review

* Updates copy to new credit system

* Moves Terms of Service to be backed by a markdown file, easier to read/edit/diff

* Updated ToS

* Twerm copy tweaks

* Cloud screenshot and style adjustments

* Style tweaks

* Styles

---------

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: Add userAgent to Bedrock client for version tracking (RooCodeInc#8663)

Co-authored-by: Roo Code <[email protected]>

* feat: Cloud agents in extension (RooCodeInc#8470)

Co-authored-by: Matt Rubens <[email protected]>

* feat: Z AI: only two coding endpoints (RooCodeInc#8687) (RooCodeInc#8693)

* Remove request content from UI messages (RooCodeInc#8696)

* Left align the welcome title (RooCodeInc#8700)

* Update image generation model selection (RooCodeInc#8698)

* feat(core): enhance client ID validation and CSP configuration

* web: Mobile image in /cloud (RooCodeInc#8705)

* feat(ui): add option to hide API request details by default

* Revert cloud agents for now (RooCodeInc#8713)

* chore: add changeset for v3.28.18 (RooCodeInc#8715)

* fix(task): adjust API request handling and error message assignment

* Changeset version bump (RooCodeInc#8716)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* test: update telemetry client mocks and fix test id typo

* Normalize docs-extractor audience tags; remove admin/stakeholder; strip tool invocations (RooCodeInc#8717)

docs(extractor): normalize audience to type="user"; remove admin/stakeholder; strip tool invocation examples

* Add Intercom as a subprocessor (RooCodeInc#8718)

* web: Leftover white bg (RooCodeInc#8719)

Leftover white bg

* feat(zgsm): add supportsMaxTokens flag and adjust max token handling

* docs: update Configuring Profiles video link (RooCodeInc#8189)

Co-authored-by: Roo Code <[email protected]>

* Fix link text for Roomote Control in README (RooCodeInc#8742)

* Try a 5s status mutation timeout (RooCodeInc#8734)

* web: Landing page for the reviewerFirst pass (RooCodeInc#8740)

* First pass

* SEO

* Update apps/web-roo-code/src/app/reviewer/page.tsx

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Remove GPT‑5 instructions/reasoning_summary from UI message metadata to prevent ui_messages.json bloat (RooCodeInc#8756)

chore(gpt5): stop persisting instructions/reasoning_summary in UI message metadata

Problem: ui_messages.json was getting bloated with unused or duplicated content (system 'instructions' and 'reasoning_summary') that we do not read back. Root cause: earlier OpenAI Responses API implementation persisted these fields to per-message metadata; however, 'instructions' are already sent as top-level request instructions and 'reasoning_summary' is surfaced live via streaming events. Neither field is consumed from storage. Changes: (1) Task.persistGpt5Metadata now stores only previous_response_id; (2) removed instructions and reasoning_summary from types; (3) updated Zod schema; (4) persistence layer writes messages as-is (no sanitizer); (5) tests green. Impact: smaller ui_messages.json, no runtime behavior change for requests. Migration: old metadata fields will be ignored by schema.

* Z.ai: add GLM-4.5-X, AirX, Flash (expand model coverage) (RooCodeInc#8745)

* feat(zai): add GLM-4.5-X, AirX, Flash; sync with Z.ai docs; keep canonical api line keys

* feat(zai): add GLM-4.5V vision model (supportsImages, pricing, 16K max output); add tests

* feat(types,zai): sync Z.AI international model map and tests
- Update pricing, context window, and capabilities for:
  glm-4.5-x, glm-4.5-airx, glm-4.5-flash, glm-4.5v, glm-4.6
- Add glm-4-32b-0414-128k
- Align tests with new model specs

* fix(zai): align handler generics with expanded model ids to satisfy CI compile step

* chore(zai): remove tier pricing blocks for Z.ai models

* fix(zai): simplify names in zaiApiLineConfigs for clarity

* chore(zai): set default temperature to 0.6

---------

Co-authored-by: Roo Code <[email protected]>

* Enable browser-use tool for all image-capable models (RooCodeInc#8121)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Skip failing tools tests (RooCodeInc#8767)

* Update text for clarity in reviewer page (RooCodeInc#8753)

* feat: add GLM-4.6-turbo model to chutes ai provider (RooCodeInc#8502)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* web: Dynamic OpenGraph images (RooCodeInc#8773)

Co-authored-by: Roo Code <[email protected]>

* web: Updates CTA link in /reviewer to send people to /cloud-agents/welcome (RooCodeInc#8774)

* feat: add 'anthropic/claude-haiku-4.5' to prompt caching models (RooCodeInc#8764)

Co-authored-by: daniel-lxs <[email protected]>

* refactor(core): consolidate global custom instructions and improve shell handling

* fix: update X/Twitter username from roo_code to roocode (RooCodeInc#8780)

Co-authored-by: Roo Code <[email protected]>

* fix(zgsm): safely pass optional language metadata to avoid runtime errors

* test: update test expectations for shell handling and prompt enhancement

* fix: always show checkpoint restore options regardless of change detection (RooCodeInc#8758)

* feat: add token-budget based file reading with intelligent preview (RooCodeInc#8789)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Remove a very verbose error for cloud agents (RooCodeInc#8795)

* fix: retry API requests on stream failures instead of aborting task (RooCodeInc#8794)

* feat: improve auto-approve button responsiveness (RooCodeInc#8798)

- Add responsive breakpoint at 300px for compact view
- Icon correctly reflects state (X when off, ✓ when on) at all screen sizes
- Show abbreviated labels on very narrow screens (< 300px)
- Add triggerLabelOffShort translation key to all locales

Fixes issues from PR RooCodeInc#8152:
- Icon always showing checkmark on narrow screens
- Breakpoint activating too early (was 400px)
- Incorrect Tailwind class ordering

* Add checkpoint initialization timeout settings and fix checkpoint timeout warnings (RooCodeInc#8019)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add dynamic model loading for Roo Code Cloud provider (RooCodeInc#8728)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* refactor(tools): move imageHelpers to tools directory and update imports

* Improve checkpoint menu translations for PR RooCodeInc#7841 (RooCodeInc#8796)

Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: NaccOll <[email protected]>

* Handle Roo provider pricing correctly (RooCodeInc#8802)

* fix: preserve trailing newlines in stripLineNumbers for apply_diff (RooCodeInc#8227)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Fix checkpoints test (RooCodeInc#8803)

* Chore: Update magistral-medium-latest in mistral.ts (RooCodeInc#8364)

Co-authored-by: daniel-lxs <[email protected]>

* fix: respect nested .gitignore files in search_files (RooCodeInc#8804)

* fix(export): exclude max tokens field for models that don't support it (RooCodeInc#8464)

* chore: add changeset for v3.29.0 (RooCodeInc#8806)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#8807)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: adjust GLM-4.6-turbo max output tokens to prevent context limit errors (RooCodeInc#8822)

Co-authored-by: Roo Code <[email protected]>

* fix: change Add to Context keybinding to avoid Redo conflict (RooCodeInc#8653)

Co-authored-by: Roo Code <[email protected]>

* feat: add Google Ads conversion tracking to reviewer page (RooCodeInc#8831)

* feat: add Google Ads conversion tracking to reviewer page

* fix: add asChild prop to first button to prevent invalid HTML nesting

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* Fix provider model loading race conditions (RooCodeInc#8836)

* Release v3.29.1 (RooCodeInc#8854)

chore: add changeset for v3.29.1

* Changeset version bump (RooCodeInc#8855)

* changeset version bump

* Update CHANGELOG for version 3.29.1 release

Updated version number and added release notes for 3.29.1.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* Fix caching logic in Roo provider (RooCodeInc#8860)

* fix: Remove specific Claude model version from settings descriptions (RooCodeInc#8437)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Daniel <[email protected]>

* feat: add LongCat-Flash-Thinking-FP8 models to Chutes AI provider (RooCodeInc#8426)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* Make sure not to show prices for free models (RooCodeInc#8864)

* chore: add changeset for v3.29.2 (RooCodeInc#8865)

* Changeset version bump (RooCodeInc#8866)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: resolve checkpoint menu popover overflow (RooCodeInc#8867)

* fix: process queued messages after context condensing completes (RooCodeInc#8478)

Co-authored-by: Roo Code <[email protected]>

* fix: use max_output_tokens when available in LiteLLM fetcher (RooCodeInc#8455)

Co-authored-by: Roo Code <[email protected]>

* Use monotonic clock for rate limiting (RooCodeInc#8456)

* Fix LiteLLM test failures after merge (RooCodeInc#8870)

* Use monotonic clock for rate limiting

* Fix LiteLLM test failures after merge

- Remove supportsComputerUse from LiteLLM implementation as it's no longer part of ModelInfo interface
- Update test expectations to include cacheWritesPrice and cacheReadsPrice fields
- Fix test for max_output_tokens preference functionality

---------

Co-authored-by: Christiaan Arnoldus <[email protected]>

* feat: add settings to configure time and cost in system prompt (RooCodeInc#8451)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Daniel <[email protected]>

* Enabled reasoning in Roo provider (RooCodeInc#8874)

* feat: Add supportsReasoning property for Z.ai GLM binary thinking mode (RooCodeInc#8872)

* feat: Add supportsReasoning property for Z.ai GLM binary thinking mode

- Add supportsReasoning to ModelInfo schema for binary reasoning models
- Update GLM-4.5 and GLM-4.6 models to use supportsReasoning: true
- Implement thinking parameter support in ZAiHandler for Deep Thinking API
- Update ThinkingBudget component to show simple toggle for supportsReasoning models
- Add comprehensive tests for binary reasoning functionality

Closes RooCodeInc#8465

* refactor: rename supportsReasoning to supportsReasoningBinary for clarity

- Rename supportsReasoning -> supportsReasoningBinary in model schema
- Update Z.AI GLM model configurations to use supportsReasoningBinary
- Update Z.AI provider logic in createStream and completePrompt methods
- Update ThinkingBudget UI component and tests
- Update all test comments and expectations

This change improves naming clarity by distinguishing between:
- supportsReasoningBinary: Simple on/off reasoning toggle
- supportsReasoningBudget: Advanced reasoning with token budget controls
- supportsReasoningEffort: Advanced reasoning with effort levels

* feat: update Gemini models with latest 09-2025 versions (RooCodeInc#8486)

* feat: update Gemini models with latest 09-2025 versions

- Add gemini-flash-latest and gemini-flash-lite-latest models
- Add gemini-2.5-flash-preview-09-2025 and gemini-2.5-flash-lite-preview-09-2025
- Reorganize models list with most recent versions at the top
- Maintain all existing models for backward compatibility

Fixes RooCodeInc#8485

* fix: restore missing maxThinkingTokens and supportsReasoningBudget for gemini-2.5-pro-preview-03-25

Backward compatibility regression fix - these properties were accidentally
removed during reorganization and are required to preserve existing
reasoning-budget controls for users pinned to this model version.

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* Focus textbox and add newlines after adding to context (RooCodeInc#8877)

* chore: add changeset for v3.29.3 (RooCodeInc#8878)

* Add how it works section to reviewer landing page (RooCodeInc#8884)

* Add exponential backoff for mid-stream retry failures (RooCodeInc#8888)

* Add exponential backoff for mid-stream retry failures

- Extend StackItem with retryAttempt counter
- Extract shared backoffAndAnnounce helper for consistent retry UX
- Apply exponential backoff to mid-stream failures when auto-approval enabled
- Add debug throw for testing mid-stream retry path

* Add abort check in retry countdown loop

Allows early exit from exponential backoff if task is cancelled during delay

* Changeset version bump (RooCodeInc#8879)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: auto-sync enableReasoningEffort with reasoning dropdown selection (RooCodeInc#8890)

* Prevent a noisy cloud agent exception (RooCodeInc#8577)

* fix(modes): custom modes under custom path not showing (RooCodeInc#8499)

* docs(vscode-lm): clarify VS Code LM API integration warning (RooCodeInc#8493)

* docs(vscode-lm): clarify VS Code LM API integration blurb, provider wording, and error guidance

* fix(vscode-lm): update settings UI warning; revert package description change

* Restored

* restored

* i18n(vscode-lm): unify vscodeLmWarning text across all locales

* i18n(vscode-lm): translate vscodeLmWarning across locales

* fix: prevent MCP server restart when toggling tool permissions (RooCodeInc#8633)

* fix: prevent MCP server restart when toggling tool permissions

Add isProgrammaticUpdate flag to distinguish between programmatic config
updates and user-initiated file changes. Skip file watcher processing
during programmatic updates to prevent unnecessary server restarts.

* fix(mcp): prevent server reconnection when toggling disabled state

Fixed bug where MCP servers would reconnect instead of staying disabled when toggled off. The issue was that toggleServerDisabled() used stale in-memory config instead of reading the fresh config from disk after writing the disabled flag.

Changes:
Added readServerConfigFromFile() helper to read and validate server config from disk
Updated disable path to read fresh config before calling connectToServer()
Updated enable path to read fresh config before calling connectToServer()
This ensures the disabled: true flag is properly read, causing connectToServer() to create a disabled placeholder connection instead of actually connecting the server.

+ refactor(mcp): use safeWriteJson for atomic config writes

Replace JSON.stringify + fs.writeFile with safeWriteJson in McpHub.ts
to prevent data corruption through atomic writes with file locking.

* fix(mcp): prevent race condition in isProgrammaticUpdate flag

Replace multiple independent reset timers with a single timer that gets
cleared and rescheduled on each programmatic config update. This prevents
the flag from being reset prematurely when multiple rapid updates occur,
which could cause unwanted server restarts during the file watcher's
debounce period.

+ fix(mcp): ensure isProgrammaticUpdate flag cleanup with try-finally

Wrap safeWriteJson() calls in try-finally blocks to guarantee the
isProgrammaticUpdate flag is always reset, even if the write operation
fails. This prevents the flag from being stuck at true indefinitely,
which would cause subsequent user-initiated config changes to be
silently ignored.

* docs(readme): update readme images and image compression

* docs: replace inline base64 images with image file references

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat(terminal): refactor execa command execution for shell handling

* Feat: Add Minimax Provider (fixes RooCodeInc#8818) (RooCodeInc#8820)

Co-authored-by: xiaose <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Release v3.29.4 (RooCodeInc#8906)

* fix: Gate auth-driven Roo model refresh to active provider only (RooCodeInc#8915)

* feat: add zai-glm-4.6 model to Cerebras and set gpt-oss-120b as default (RooCodeInc#8920)

* feat: add zai-glm-4.6 model and update gpt-oss-120b for Cerebras

- Add zai-glm-4.6 with 128K context window and 40K max tokens
- Set zai-glm-4.6 as default Cerebras model
- Update gpt-oss-120b to 128K context and 40K max tokens

* feat: add zai-glm-4.6 model to Cerebras provider

- Add zai-glm-4.6 with 128K context window and 40K max tokens
- Set zai-glm-4.6 as default Cerebras model
- Model provides ~2000 tokens/s for general-purpose tasks

* add [SOON TO BE DEPRECATED] warning for Q3C

* chore: set gpt-oss-120b as default Cerebras model

* Fix cerebras test: update expected default model to gpt-oss-120b

* Apply suggestion from @mrubens

Co-authored-by: Matt Rubens <[email protected]>

---------

Co-authored-by: kevint-cerebras <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* roo provider: update session token on every request (RooCodeInc#8923)

* roo provider: update session token on every request

* Cleanup: remove unused imports

* Also refresh token before completePrompt()

* feat: add We're hiring link to announcement modal (RooCodeInc#8931)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Fix: Enhanced codebase index recovery and reuse ('Start Indexing' button now reuses existing Qdrant index) (RooCodeInc#8588)

Co-authored-by: daniel-lxs <[email protected]>

* fix: make code index initialization non-blocking at activation (RooCodeInc#8933)

* fix(context): truncate type definition to match max read line (RooCodeInc#8509)

Co-authored-by: daniel-lxs <[email protected]>

* fix: prevent infinite loop when canceling during auto-retry (RooCodeInc#8902)

* fix: prevent infinite loop when canceling during auto-retry

- Add abort check after backoffAndAnnounce in first-chunk retry logic
- Add abort check after backoffAndAnnounce in mid-stream retry logic
- Properly handle task abortion to break retry loops

Fixes RooCodeInc#8901

* docs: add critical comments explaining abort checks

- Document the importance of abort checks after backoff
- Explain how these checks prevent infinite loops
- Add context for future maintainability

---------

Co-authored-by: Roo Code <[email protected]>

* feat: rename MCP Errors tab to Logs for mixed-level messages (RooCodeInc#8894)

- Update McpView.tsx to use "logs" tab ID instead of "errors"
- Rename translation key from tabs.errors to tabs.logs in all locales
- Change empty state message from "No errors found" to "No logs yet"

This better reflects that the tab shows all server messages (info, warnings, errors), not just errors.

Fixes RooCodeInc#8893

Co-authored-by: Roo Code <[email protected]>

* feat: improve @ file search for large projects (RooCodeInc#8805)

* feat: improve @ file search for large projects

- Increase default file limit from 5,000 to 10,000 (configurable up to 500,000)
- Respect VSCode search settings (useIgnoreFiles, useGlobalIgnoreFiles, useParentIgnoreFiles)
- Add 'maximumIndexedFilesForFileSearch' configuration setting
- Add tests for new functionality

Conservative default of 10k keeps memory usage low while still providing 2x
improvement. Users with large projects can opt-in to higher limits (up to 500k).

This is a simplified alternative to PR RooCodeInc#5723 that solves the same problem
without the complexity of caching. Ripgrep is already fast enough for
10k+ files, and the benefit of caching doesn't justify 2,200+ lines of
additional code and maintenance burden.

Fixes RooCodeInc#5721

* fix: add missing translations for maximumIndexedFilesForFileSearch setting

* test: improve file-search tests to verify configuration behavior

* fix: remove search_and_replace tool from codebase (RooCodeInc#8892)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>

* Release v3.29.5 (RooCodeInc#8942)

* Changeset version bump (RooCodeInc#8907)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Fix cost and token tracking between provider styles (RooCodeInc#8954)

* web: Attempt at compliant, cookie-less anonymous tracking for the website (RooCodeInc#8957)

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* fix: add keyword index for type field to fix Qdrant codebase_search error (RooCodeInc#8964)

Co-authored-by: Roo Code <[email protected]>

* chore: add changeset for v3.29.5 (RooCodeInc#8967)

* Changeset version bump (RooCodeInc#8968)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Capture the reasoning content in base-openai-compatible for GLM 4.6 (RooCodeInc#8976)

* feat: optimize router model fetching with single-provider filtering (RooCodeInc#8956)

* fix: prevent message loss during queue drain race condition (RooCodeInc#8955)

* fix: create new Requesty profile during OAuth (RooCodeInc#8699)

Co-authored-by: John Costa <[email protected]>

* feat: convert Chutes to dynamic/router provider (RooCodeInc#8980)

* feat: convert Chutes to dynamic/router provider

- Add chutes to dynamicProviders array in provider-settings
- Add chutes entry to dynamicProviderExtras in api.ts
- Create fetcher function for Chutes models API
- Convert ChutesHandler to extend RouterProvider
- Update tests to work with dynamic provider setup
- Export chutesDefaultModelInfo for RouterProvider constructor

* fix: address security and code quality issues from review

- Fix potential API key leakage in error logging
- Add temperature support check before setting temperature
- Improve code consistency with RouterProvider patterns

* fix: add chutes to routerModels initialization

- Fix TypeScript error in webviewMessageHandler
- Ensure chutes is included in RouterName Record type

* Fixes

* Support reasoning

* Fix tests

* Remove reasoning checkbox

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add OpenRouter embedding provider support (RooCodeInc#8973)

* feat: add OpenRouter embedding provider support

Implement comprehensive OpenRouter embedding provider support for codebase indexing with the following features:

- New OpenRouterEmbedder class with full API compatibility
- Support for OpenRouter's OpenAI-compatible embedding endpoint
- Rate limiting and retry logic with exponential backoff
- Base64 embedding handling to bypass OpenAI package limitations
- Global rate limit state management across embedder instances
- Configuration updates for API key storage and provider selection
- UI integration for OpenRouter provider settings
- Comprehensive test suite with mocking
- Model dimension support for OpenRouter's embedding models

This adds OpenRouter as the 7th supported embedding provider alongside OpenAI, Ollama, OpenAI-compatible, Gemini, Mistral, and Vercel AI Gateway.

* Add translation key

* Fix mutex double release bug

* Add translations

* Add more translations

* Fix failing tests

* code-index(openrouter): fix HTTP-Referer header to RooCodeInc/Roo-Code; i18n: add and wire OpenRouter Code Index strings; test: assert default headers in embedder

---------

Co-authored-by: daniel-lxs <[email protected]>

* feat: add GLM-4.6 model to Fireworks provider (RooCodeInc#8754)

Co-authored-by: Roo Code <[email protected]>

* feat: add MiniMax M2 model to Fireworks.ai provider (RooCodeInc#8962)

Co-authored-by: Roo Code <[email protected]>

* Union a hard-coded list of chutes models with the dynamic list (RooCodeInc#8988)

* Handle <think> tags in the base OpenAI-compatible provider (RooCodeInc#8989)

* Don't output newline-only reasoning (RooCodeInc#8990)

Co-authored-by: Roo Code <[email protected]>

* feat: implement Google Consent Mode v2 with cookieless pings (RooCodeInc#8987)

* feat: implement Google Consent Mode v2 with cookieless pings

- Add consent defaults before gtag.js loads (required for Consent Mode v2)
- Enable cookieless pings with url_passthrough for Google Ads
- Implement consent update logic for all consent categories
- Support both granted and denied consent states
- Maintain backward compatibility with existing consent manager

* fix: remove shouldLoad from useEffect dependency array to prevent re-initialization loop

---------

Co-authored-by: Roo Code <[email protected]>

* Terminal settings: Cleanup terminal settings tab and change default terminal to inline (RooCodeInc#8342)

Co-authored-by: Copilot <[email protected]>

* feat: add preserveReasoning flag to include reasoning in API history (RooCodeInc#8934)

* fix: update terminal settings documentation link (RooCodeInc#8997)

* refactor(terminal): simplify getTerminalByVSCETerminal method

* fix: prevent UI flicker and enable resumption after task cancellation (RooCodeInc#8986)

* docs: Update readme to link the new Custom Modes video (RooCodeInc#9000)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Sannidhya <[email protected]>

* feat(web): add /pr-fixer page and Cloud Agents footer (RooCodeInc#8996)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>

* v3.29.6 (RooCodeInc#9004)

* chore: add changeset for v3.30.0 (RooCodeInc#9006)

* Changeset version bump (RooCodeInc#9005)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* config(rooignore): remove ignored directories from exclusion list

* fix: correct OpenRouter Mistral model dimension from 3072 to 1536 (RooCodeInc#9028)

* Revert "fix: prevent UI flicker and enable resumption after task cancellation" (RooCodeInc#9032)

* chore: add changeset for v3.30.1 (RooCodeInc#9033)

* Changeset version bump (RooCodeInc#9034)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: eliminate UI flicker during task cancellation (RooCodeInc#9037)

* fix: eliminate UI flicker during task cancellation

- Modify ClineProvider.createTaskWithHistoryItem() to detect when rehydrating current task
- Implement in-place task replacement to avoid empty stack state that causes UI flicker
- Add comprehensive unit tests for flicker-free cancel behavior
- Maintain backward compatibility and proper event listener cleanup

Fixes the jarring navigation to home view when cancelling tasks

* fix: ensure proper garbage collection of old task during flicker-free rehydration

- Call abortTask(true) on old task before replacement to stop processes and mark as abandoned
- This ensures proper cleanup and prevents memory leaks during task cancellation
- Add test verification for abortTask cleanup

* feat: add file path tooltips with centralized PathTooltip component (RooCodeInc#9030)

- Add PathTooltip component that wraps StandardTooltip with proper styling
- Use maxWidth='min(300px,100vw)' via inline style to override defaults
- Apply '[text-wrap:wrap]' class to override text-balance behavior
- Add formatPathTooltip helper for consistent path content formatting
- Update CodeAccordian, ChatRow, and BatchFilePermission to use PathTooltip
- Centralizes tooltip behavior and reduces duplication

Supersedes PR RooCodeInc#8797.

* fix: keep pinned models fixed at top of scrollable list (RooCodeInc#8813)

* fix: keep pinned models fixed at top of scrollable list

- Separated pinned and unpinned configs into different containers
- Pinned configs now stay fixed at the top
- Only unpinned configs are scrollable
- Added tests to verify the fixed behavior

Fixes RooCodeInc#8812

* fix: resolve sticky header visual artifact in ApiConfigSelector

- Changed sticky header background from bg-vscode-editorWidget-background to bg-vscode-dropdown-background to match popover container
- Moved separator logic into sticky container as conditional bottom border to prevent scroll artifacts
- Updated tests to match new separator structure
- All 21 tests passing

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* Set Claude Sonnet 4.5 as default for key providers (RooCodeInc#8922)

* fix(checkpoints): resolve incorrect commit location when GIT_DIR set in Dev Containers (RooCodeInc#8811)

* Update cerebras.ts (RooCodeInc#9024)

* fix: update Opus 4.1 max tokens from 8K to 32K (RooCodeInc#9046)

Aligns claude-opus-4-1-20250805 max token limit with claude-opus-4-20250514,
both models now supporting 32K output tokens (overridable to 8K when
enableReasoningEffort is false).

Fixes RooCodeInc#9045

Co-authored-by: Roo Code <[email protected]>

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat(api): add mode parameter to ZgsmAiHandler and add tooltips to ChatRow buttons

* chore: simplify Google Analytics to standard implementation (RooCodeInc#9044)

Co-authored-by: Roo Code <[email protected]>

* feat: add conditional test running to pre-push hook (RooCodeInc#9055)

* Fix dynamic provider model validation to prevent cross-contamination (RooCodeInc#9054)

* Fix Bedrock user agent to report full SDK details (RooCodeInc#9043)

* feat: add Qwen3 embedding models (0.6B and 4B) to OpenRouter support (RooCodeInc#9060)

Co-authored-by: Roo Code <[email protected]>

* web: Agent Landing Page A/B testing toolkit (RooCodeInc#9018)

Co-authored-by: Roo Code <[email protected]>

* feat: Global Inference for Bedrock models (RooCodeInc#8750) (RooCodeInc#8940)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>

* Release v3.30.2 (RooCodeInc#9065)

chore: add changeset for v3.30.2

* Changeset version bump (RooCodeInc#9066)

* changeset version bump

* Revise CHANGELOG for version 3.30.2

Updated changelog for version 3.30.2 with new features and fixes.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main

* feat(error-handling): add HTTP 413 payload too large error handling

* fix(webview): correct default value for useZgsmCustomConfig and fix settings message order

---------

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: John Richmond <[email protected]>
Co-authored-by: Mohammad Danaee nia <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: MuriloFP <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>
Co-authored-by: Colby Serpa <[email protected]>
Co-authored-by: Peter Dave Hello <[email protected]>
Co-authored-by: Chris Hasson <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: Christiaan Arnoldus <[email protected]>
Co-authored-by: laz-001 <[email protected]>
Co-authored-by: NaccOll <[email protected]>
Co-authored-by: Drake Thomsen <[email protected]>
Co-authored-by: Dicha Zelianivan Arkana <[email protected]>
Co-authored-by: Seth Miller <[email protected]>
Co-authored-by: Maosghoul <[email protected]>
Co-authored-by: xiaose <[email protected]>
Co-authored-by: kevint-cerebras <[email protected]>
Co-authored-by: Thibault Jaigu <[email protected]>
Co-authored-by: John Costa <[email protected]>
Co-authored-by: David Markey <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Sannidhya <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: Seb Duerr <[email protected]>
Co-authored-by: dleffel <[email protected]>
Co-authored-by: AJ Juaire <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR - Needs Preliminary Review size:M This PR changes 30-99 lines, ignoring generated files. UI/UX UI/UX related or focused

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[BUG] Filename truncated in notice when chat is narrow

3 participants